package org.footballmanager.pandafootball.system.service;

import org.footballmanager.pandafootball.system.domain.FootSociatyInfo;
import org.footballmanager.pandafootball.system.domain.FootZnx;
import org.footballmanager.pandafootball.system.form.impl.FootZnxSearchForm;
import org.springframework.ui.Model;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

public interface FootZnxService extends BaseService<FootZnx> {
    /**
     * 发送站内信
     *
     * @param sender  发送者主键
     * @param reciver 接收者主键
     * @param content 内容
     * @param logo    logo
     * @param url     地址
     * @param request 请求
     */
    void sendZnx(Long sender, Long reciver, String content, Long logo, String url, HttpServletRequest request);

    /**
     * 根据用户主键查找所有对应的站内信信息
     *
     * @param userId 用户主键
     * @return 站内信信息列表
     */
    List<FootZnx> findZnxsByUserId(Long userId);

    /**
     * 根据用户主键标记所有站内信为已读
     *
     * @param userId  用户主键
     * @param request 请求
     */
    void readAll(Long userId, HttpServletRequest request);

    /**
     * 翻页方法
     *
     * @param footZnxSearchForm 条件
     * @return 列表
     */
    List<FootZnx> findall(FootZnxSearchForm footZnxSearchForm);

    /**
     * 读取站内信
     *
     * @param id      站内信主键
     * @param request 请求
     * @return 成功或失败
     */
    String znxyd(Long id, HttpServletRequest request);

    /**
     * 查询
     *
     * @param entityname        实体类名
     * @param map               参数
     * @param footZnxSearchForm 条件
     */
    void search(String entityname, Model map, FootZnxSearchForm footZnxSearchForm);

    /**
     * 删除所有
     *
     * @param footZnxSearchForm 条件
     * @param request           请求
     */
    void deleteAll(FootZnxSearchForm footZnxSearchForm, HttpServletRequest request);

    /**
     * 设置站内信状态为已读
     *
     * @param id      站内信主键
     * @param request 请求
     * @return 站内信实体
     */
    FootZnx read(Long id, HttpServletRequest request);

    /**
     * 发送战队站内信
     *
     * @param id      用户主键 发送者
     * @param list    接收者列表
     * @param content 内容
     * @param logo    接收者队标
     * @param url     对应url
     * @param request 请求
     */
    void sendSociatyZnx(Long id, List<FootSociatyInfo> list, String content, Long logo, String url, HttpServletRequest request);

    /**
     * 根据用户主键删除所有记录
     *
     * @param userId  用户主键
     * @param request 请求
     */
    void deleteByUserId(Long userId, HttpServletRequest request);
}